liskov substitution in python